﻿using AspNetMVCTodo.Models;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace AspNetMVCTodo.Data;

/// <summary>
/// 数据库上下文(database context)是一个 C# 类提供的数据库入口点。
///  代码就是通过它与数据库交互，进行读写的。
/// </summary>
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    // IdentityDbContext 内部已经包含了：
    // public DbSet<IdentityUser> Users { get; set; }
    // 这个 DbSet 默认映射到 AspNetUsers 表


    //DbSet 代表数据库里的 表 或者 集合
    public DbSet<TodoItem> Items { get; set; }

    //protected override void OnModelCreating(ModelBuilder builder)
    //{
    //    base.OnModelCreating(builder);
    //    // Customize the ASP.NET Identity model and override the defaults if needed.
    //    // For example, you can rename the ASP.NET Identity table names and more.
    //    // Add your customizations after calling base.OnModelCreating(builder);
    //    builder.Entity<ApplicationUser>().HasQueryFilter(u => !u.IsDeleted); // 全局查询过滤器，自动排除软删除的用户
    //}
}
